<template>
  <a-card :bordered="false">
    <a-row style="margin-top: 20px">
      <a-col :md="2" :sm="4">
        <a-select defaultValue="POST" style="width: 90px" @change="handleChange" size="large">
          <a-select-option value="POST">POST</a-select-option>
          <a-select-option value="GET">GET</a-select-option>
          <a-select-option value="PUT">PUT</a-select-option>
          <a-select-option value="DELETE">DELETE</a-select-option>
        </a-select>
      </a-col>
      <a-col :md="22" :sm="20">
        <a-input-search
          placeholder="input send url"
          v-model="url"
          @search="onSearch"
          enterButton="Send"
          size="large" />
      </a-col>
    </a-row>

    <a-tabs defaultActiveKey="2">
      <a-tab-pane tab="params" key="2">
        <textarea style="width:100%;font-size: 16px;font-weight:500" :rows="13" @blur="changeVal">
        </textarea>
      </a-tab-pane>
    </a-tabs>

    <a-tabs defaultActiveKey="1">
      <a-tab-pane tab="response" key="1">
        <textarea style="width:100%;font-size: 16px;font-weight:500" :rows="10" v-html="resultJson" readOnly>
        </textarea>
      </a-tab-pane>
    </a-tabs>
  </a-card>
</template>
<script>
import { axios } from '@/utils/request'
import { ACCESS_TOKEN } from '@/store/mutation-types'
import Vue from 'vue'

export default {
  name: 'FlowTest',
  data() {
    return {
      url: '',
      paramJson: '',
      resultJson: {},
      requestMethod: 'POST'
    }
  },
  methods: {
    onSearch(value) {
      let that = this
      if (!value) {
        that.$message.error('请填写路径')
        return false
      }
      this.resultJson = {}
      axios({
        url: value,
        method: this.requestMethod,
        data: this.paramJson
      }).then((res) => {
        console.log(res)
        this.resultJson = res
      }).catch((err) => {
        that.$message.error('请求异常：' + err)
      })
    },
    changeVal(e) {
      try {
        let json = e.target.value
        if (json.indexOf(',}') > 0) {
          json = json.replace(',}', '}')
        }
        this.paramJson = JSON.parse(json)
      } catch (e) {
        console.log(e)
        this.$message.error('非法的JSON字符串')
      }
    },
    handleChange(value) {
      this.requestMethod = value
    },
    created() {
      const token = Vue.ls.get(ACCESS_TOKEN)
      this.headers = { 'X-Access-Token': token }

    }
  }
}
</script>